GtkTreeView: Don't hardcode black for tree lines
authorMatthias Clasen <mclasen@redhat.com>
Sat, 30 Aug 2014 06:12:41 +0000 (02:12 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 30 Aug 2014 06:12:41 +0000 (02:12 -0400)
Use the left border color for tree lines. This is similar to
our use of top border color for grid lines. As a side-effect,
tree lines now get recolored when they are in a selected row.

https://bugzilla.gnome.org/show_bug.cgi?id=415415

gtk/gtktreeview.c

index da1526cb55a7bc227958d5f364c61ff0b3a2970c..8cd2cb451d1a4c0fc7ea60e891bb013abf7330a4 100644 (file)
@@ -4790,49 +4790,54 @@ gtk_tree_view_draw_line (GtkTreeView         *tree_view,
                          int                  x2,
                          int                  y2)
 {
+  GtkStyleContext *context;
+
   cairo_save (cr);
 
+  context = gtk_widget_get_style_context (GTK_WIDGET (tree_view));
+
   switch (type)
     {
     case GTK_TREE_VIEW_TREE_LINE:
-      cairo_set_source_rgb (cr, 0, 0, 0);
-      cairo_set_line_width (cr, tree_view->priv->tree_line_width);
-      if (tree_view->priv->tree_line_dashes[0])
-        cairo_set_dash (cr, 
-                        tree_view->priv->tree_line_dashes,
-                        2, 0.5);
+      {
+        const GdkRGBA *color;
+
+        color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_LEFT_COLOR));
+
+        gdk_cairo_set_source_rgba (cr, color);
+        cairo_set_line_width (cr, tree_view->priv->tree_line_width);
+        if (tree_view->priv->tree_line_dashes[0])
+          cairo_set_dash (cr, tree_view->priv->tree_line_dashes, 2, 0.5);
+      }
       break;
+
     case GTK_TREE_VIEW_GRID_LINE:
       {
-        GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET (tree_view));
-        const GdkRGBA *color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
+        const GdkRGBA *color;
+
+        color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
 
         gdk_cairo_set_source_rgba (cr, color);
         cairo_set_line_width (cr, tree_view->priv->grid_line_width);
         if (tree_view->priv->grid_line_dashes[0])
-          cairo_set_dash (cr,
-                          tree_view->priv->grid_line_dashes,
-                          2, 0.5);
+          cairo_set_dash (cr, tree_view->priv->grid_line_dashes, 2, 0.5);
       }
       break;
 
-    default:
-      g_assert_not_reached ();
-      /* fall through */
     case GTK_TREE_VIEW_FOREGROUND_LINE:
       {
-        GtkStyleContext *context;
         GtkStateFlags state;
         GdkRGBA color;
 
-        context = gtk_widget_get_style_context (GTK_WIDGET (tree_view));
         state = gtk_widget_get_state_flags (GTK_WIDGET (tree_view));
-
         cairo_set_line_width (cr, 1.0);
         gtk_style_context_get_color (context, state, &color);
         gdk_cairo_set_source_rgba (cr, &color);
       }
+      break;
 
+    default:
+      g_assert_not_reached ();
       break;
     }